package com.zhisheng.day10_tlias.utils;
/*
    自定义的jwt的工具类

    生成令牌和解析令牌
 */

import io.jsonwebtoken.Claims;
import io.jsonwebtoken.Jwts;
import io.jsonwebtoken.SignatureAlgorithm;
import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;

import java.util.Date;
import java.util.Map;

@Component
@ConfigurationProperties(prefix = "myjwt")
@Data
public class MyJwtUtils {
    private Long time;
    private String type;
    private String key;

    // 生成令牌的方法
    public String createToken(Map<String,Object> map){
        // 2: 面向 Jwt提供的工具类,生成一个令牌
        String s = Jwts.builder().setClaims(map).signWith(SignatureAlgorithm.valueOf(type), key).setExpiration(new Date(System.currentTimeMillis() + time))
                .compact();
        return s;
    }

    public Map<String,Object> parseToken(String token){
        try {
            Claims body = Jwts.parser().setSigningKey(key).parseClaimsJws(token).getBody();
            return body;
        } catch (Exception e) {
            //throw new RuntimeException(e);
            e.printStackTrace();
            System.out.println("解析令牌失败,令牌无效!");
            return null;
        }
    }
}
